STOS Запись в строку (из байтов или слов)

Флаги не меняются.

Команда:

STOS destination-string

Логика:

(ES:DI) = Accumulator
                     if DF = 0
                         DI = DI + n    ; n = 1 для байта, 2 - для слова
                     else
                         DI = DI - n 

Команда STOS копирует байт или слово, расположенное в AL или AX, в место памяти, на которое указывает (ES:DI), а также инкрементирует или декрементирует DI (в зависимости от состояния флага направления DF), чтобы подготовиться к копированию аккумулятора в следующую ячейку (байт или слово) памяти.

Операнды Такт байты (слова)ОбращенияБайтыПример
dest-str11(15)11STOS WORD_ARRAY
dest-str (повтор)9+10(14)/rep 1/rep1REP STOS WORD_ARRAY

Примечания:
Эта команда всегда ассемблируется или как STOSB, запись в строку из байтов, или как STOSW, запись в строку из слов, в зависимости от того, указывает ли destination-string на строку байтов или на строку слов. Однако, в обоих случаях Вы должны в явном виде загрузить в регистр DI смещение строки.

Пример.
Если команду записи в строку использовать в сочетании с префиксом REPBUFFER, в 0 :

MOV  AL,0      		;значение,которое присваиваем
                            ;при инициализации
LEA  DI,BUFFER 		;загружаем стартовый адрес блока памяти
MOV  CX,100    		;размер блока памяти
CLD            		;будем двигаться в прямом направлении
REP  STOS BUFFER    	;сравните эту строку с примером для STOSB
Hosted by uCoz